//package online_exams.interceptor;
//
//import cn.dev33.satoken.stp.StpUtil;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import org.springframework.stereotype.Component;
//import org.springframework.web.servlet.HandlerInterceptor;
//
//
//@Component
//public class AuthInterceptor implements HandlerInterceptor {
//
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//        // 从请求头中获取 token
//        String token = request.getHeader("Authorization");
//
//        // 验证 token
//        if (token != null && token.startsWith("Bearer ")) {
//            token = token.substring(7); // 去掉 "Bearer " 前缀
//            if (StpUtil.isLogin(token)) {
//                // 用户已登录，继续请求
//                return true;
//            } else {
//                // 登录已过期
//                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
//                response.getWriter().write("登录已过期，请重新登录");
//                return false;
//            }
//        } else {
//            // 没有 token
//            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
//            response.getWriter().write("没有权限");
//            return false;
//        }
//    }
//
//    @Override
//    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//        // 处理成功响应
//        if (response.getStatus() == HttpServletResponse.SC_OK) {
//            // 这里可以添加一些成功响应的处理逻辑
//            // 例如，您可以在日志中记录成功的请求
//            System.out.println("请求成功: " + request.getRequestURI());
//        } else {
//            // 处理错误响应
//            String message;
//            switch (response.getStatus()) {
//                case HttpServletResponse.SC_UNAUTHORIZED:
//                    message = "登录已过期，请重新登录";
//                    break;
//                case HttpServletResponse.SC_FORBIDDEN:
//                    message = "没有权限";
//                    break;
//                case HttpServletResponse.SC_NOT_FOUND:
//                    message = "请求地址错误";
//                    break;
//                case HttpServletResponse.SC_INTERNAL_SERVER_ERROR:
//                    message = "服务器故障";
//                    break;
//                default:
//                    message = "网络连接故障";
//            }
//            // 记录错误信息
//            System.err.println("请求失败: " + request.getRequestURI() + " - " + message);
//
//            // 如果需要，可以将错误信息返回给前端
//            response.setContentType("application/json");
//            response.getWriter().write("{\"error\": \"" + message + "\"}");
//        }
//    }
//
//}
